NLP

Neural Response Generation with Meta-Words

本文提出用meta-word来表示输入和回复间的关系,基于meta-word的架构,诸如情感对话生成、个性化对话生成等热点问题都可通过该论文提出的框架解决。ACL2019

paper link

Introduction

本文提出用meta-word来表示输入和回复间的关系。Meta-word代表了一组回复属性(如表1中的回复意图(Act),回复长度(Len)等)。利用meta-word进行对话生成的好处包括:(1)模型具有很好的可解释性;(2)通过订制meta-word,开发者可以控制回复生成;(3)情感,话题,人格等都可以定义为meta-word中的一个属性,因此诸如情感对话生成,个性化对话生成等热点问题都可通过该论文提出的框架解决;(4)工程师们可以通过增加或调整meta-word不断提升生成模型的性能。

Table  1:  An  example  of  response  generation  with  meta-words.  The  underlined  word  means  it  is  copied  from the  message,  and  the  word  in  bold  means  it  corresponds  to  high  specificity.

利用meta-word进行回复生成需要解决两个问题:(1)如何确保回复和输入相关;(2)如何确保回复能够如实地表达预先定义的meta-word。为了解决这两个问题,论文将meta-word的表达形式化成回复生成中的目标,提出了一个基于目标跟踪记忆网络的生成模型(如图1)。该网络由一个状态记忆板和一个状态控制器组成,前者记录生成过程中meta-word的表达情况,后者则根据当前已经生成的部分动态地更新记忆板中的存储并将目前的表达情况和最终表达目的的差距传达给解码器。在模型学习过程中,论文在传统的似然目标之外增加了一个状态更新损失,以使得目标追踪能够更好地利用训练数据中的监督信号。不仅如此,论文还提出了一个meta-word的预测方案,从而使得整个架构可以在实际中使用。

Figure  1:  Architecture  of  goal  tracking  memory  enhanced  sequence-to-sequence  model.

Response Generation with Meta-Words

Problem Formalization

给定数据集 $D=\{(X_{i}, M_{i}, Y_{i})\}_{i=1}^{N}$,$X_{i}$是输入,$M_{i}=\left(m_{i, 1}, \ldots, m_{i, l}\right)$ 是meta-word集合,其中 $m_{i, j}=\left(m_{i, j} \cdot k, m_{i, j} \cdot t, m_{i, j} \cdot v\right)$ 代表meta-word中第j个属性的key, type, value。type是指属性值为categorical(c) or real-valued(r)。目标是估计生成概率$P(Y|X,M)$,注意这里meta-word是事先定义好的。

Goal Tracking Memory Network

GTMN通过state memory panel 和 state controller来动态控制回复生成过程,前者记录生成过程中meta-word的表达情况,后者则根据当前已经生成的部分动态地更新记忆板中的存储并将目前的表达情况和最终表达目的的差距传达给解码器。

State Memory Panel

假设meta-word M由l个属性组成,则state memory panel 由l个memory cell组成 $\{M_{i}\}_{i=1}^{l}$,其中的每一个$M_{i}$由(key, goal, value)组成,记为$(\mathcal{M}_{i} . k, \mathcal{M}_{i} . g, \mathcal{M}_{i} . v)$,$M_{i}$被初始化为:

其中$B(.)$返回输入文本的bag-of-words表示,$M_{i}.k\in R^{d}$,$M_{i}.g\in R^{d}$在解码的过程中保持不变。$M_{i}.g$代表期望的$m_{i}$表达,$M_{i}.v$代表在解码过程中实际的$m_{i}$表达,如图1中灰色的进度条,会由state controller在解码的每步后更新。

State Controller

state controller位于encoder和decoder之间,负责控制state memory与decoder之间的交互。假定$s_{t}$是时刻t的解码器状态,state controller基于$s_{t}$来更新$M_{i}.v_{t-1}$到$M_{i}.v_{t}$,然后通过一个difference reading operation来获取$M_{i}.g$与$M_{i}.v_{t}$之间的差异,也即目前的表达情况和目标表达之间的差异,基于此预测回复的第t个词。

State Update Operation 作者将状态更新分为SUB和ADD两种操作,采取soft-gate来控制二者的权重。$\Delta_{t}^{S U B}(i) \in \mathbb{R}^{d}, \Delta_{t}^{ADD}(i) \in \mathbb{R}^{d}$,$g_{t}\in R^{d\times l}$ 代表l个属性的gate向量,$g_{t}(i)\in R^{d}$即为第i个属性的gate向量。

其中:
$$g_{t}(i)=\sigma\left(W_{g} \mathcal{S}_{t}(i)+b_{g}\right)$$
$$
\left[\begin{array}{c}{\Delta_{t}^{S U B}(i)} \\ {\Delta_{t}^{A D D}(i)}\end{array}\right]=\sigma\left(\left[\begin{array}{c}{W^{S U B}} \\ {W^{A D D}}\end{array}\right] \mathcal{S}_{t}(i)+\left[\begin{array}{c}{b^{S U B}} \\ {b^{A D D}}\end{array}\right]\right)
$$
$$\mathcal{S}_{t}(i)=\mathcal{M}_{i}.k \oplus \mathcal{M}_{i}.v_{t-1} \oplus s_{t}$$
$\oplus$代表拼接。

Learning Method

Loss for Model Learning

在模型学习过程中,论文在传统的似然目标之外增加了一个状态更新损失,以使得目标追踪能够更好地利用训练数据中的监督信号。

针对于似然损失:
$$
\mathcal{L}_{N L L}(\Theta)=-\frac{1}{N} \sum_{i=1}^{N} \log P\left(Y_{i} | X_{i}, M_{i}\right)
$$
针对于状态更新损失,分为两种情况:给定$y_{1:t}$为时间t步已经生成的回复,对于$\forall m_{i} \in M$

  • $\exists \mathcal{F}_{i}(\cdot)$ 使得 $\mathcal{F}_{i}\left(y_{1 : t}\right)$ 将$y_{1:t}$映射到$m_{i}.v$的空间,例如response length $\mathcal{F}_{i}\left(y_{1 : t}\right)=t$
    $$
    \mathcal{L}_{S U}^{1}\left(m_{i}\right)=\sum_{t=1}^{T}\left|\mathcal{M}_{i \cdot} v_{t}-\operatorname{Rep}\left(\mathcal{F}_{i}\left(y_{1 : t}\right)\right)\right|
    $$
  • 如果无法显式定义$\mathcal{F}_{i}(\cdot)$,例如dialog act无法由部分回复得到。
    $$
    \mathcal{L}_{S U}^{2}\left(m_{i}\right)=\left|\mathcal{M}_{i \cdot} v_{T}-\operatorname{Rep}\left(m_{i} \cdot v\right)\right|
    $$

最终状态损失$\mathcal{L}_{SU}$为:
$$
\sum_{i=1}^{N} \sum_{j=1}^{l} \mathbb{I}\left[m_{i, j} \in \mathcal{C}_{1}\right] \mathcal{L}_{S U}^{1}\left(m_{i, j}\right)+\mathbb{I}\left[m_{i, j} \in \mathcal{C}_{2}\right] \mathcal{L}_{S U}^{2}\left(m_{i, j}\right)
$$
GTMES2S的损失为:
$$
\mathcal{L}(\Theta)=\mathcal{L}_{N L L}(\Theta)+\lambda \mathcal{L}_{S U}(\Theta)
$$

Meta-word Prediction

模型测试时需要meta-word,论文采取了从$\left\{\left(X_{i}, M_{i}\right)\right\}_{i=1}^{N} \subset \mathcal{D}$估计的概率分布中采样的方法。假设$h_{X}^{p}$是encoder的最后隐层状态:如果$m_{i} . t=c$,$m_{i} . v$服从指数分布,参数$\vec{p}_{i}=W_{i}^{m u l} h_{X}^{p}+b_{i}^{m u l}$;否则$m_{i} . v$服从正态分布,均值为$W_{i}^{\mu} h_{X}^{p}+b_{i}^{\mu}$,方差为$W_{i}^{\sigma} h_{X}^{p}+b_{i}^{\sigma}$。并且设定不同属性相互独立,最大化$\left\{\left(M_{i} | X_{i}\right)\right\}_{i=1}^{N}$的似然概率。

Experiments

在论文Twitter和Reddit两个数据集上考察了生成回复的相关性、多样性、“一对多“关系建模的准确性、以及meta-word表达的准确性。不仅如此,还对生成结果进行了人工评测。实验结果如下:

当逐渐地增加meta-word中的属性变量,验证集上的PPL会逐渐降低,这也印证了“通过调整meta-word可以不断提升模型性能”的论断。